package com.aigou.admin.aigouspringboot.service.impl;

import com.aigou.admin.aigouspringboot.common.Constants;
import com.aigou.admin.aigouspringboot.entity.ProductType;
import com.aigou.admin.aigouspringboot.mapper.ProductTypeMapper;
import com.aigou.admin.aigouspringboot.service.ProductTypeService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Author Mr.LiFuXing
 * @Date 2024/12/10 20:21
 * @Title ProductTypeServiceImpl
 * @Package com.aigou.admin.aigouspringboot.service.impl
 */
@Service
public class ProductTypeServiceImpl implements ProductTypeService {

    @Resource
    private ProductTypeMapper productTypeMapper;

    @Override
    public List<ProductType> selectAll() {
        return productTypeMapper.selectAll();
    }

    /**
     * 分页查询产品类型列表
     * @param current 当前页
     * @return info 包含产品类型列表信息的分页对象
     */
    @Override
    public PageInfo<ProductType> selectProductTypeListByPage(Integer current) {
        // 分页插件，开启分页
        PageHelper.startPage(current, Constants.PAGE_SIZE);
        // 查询所有产品类型信息
        List<ProductType> productTypeList = productTypeMapper.selectAll();
        // 把productTypeList放入返回分页信息
        return new PageInfo<>(productTypeList);
    }

    /**
     * 根据id删除产品类型
     * @param id 产品类型的id
     * @return 受影响的行数，正常删除返回1
     */
    @Override
    public int deleteById(String id) {
        return productTypeMapper.deleteByPrimaryKey(id);
    }

    /**
     * 根据id查询产品类型信息
     * @param id 产品类型的id
     * @return 对应的产品类型对象
     */
    @Override
    public ProductType selectById(String id) {

        return productTypeMapper.selectByPrimaryKey(id);
    }

    /**
     * 编辑产品类型信息
     * @param productType 要编辑的产品类型对象，包含修改后的数据
     * @return 受影响的行数，正常更新返回1
     */
    @Override
    public int edit(ProductType productType) {

        return productTypeMapper.updateByPrimaryKeySelective(productType);
    }

    /**
     * 添加产品类型信息
     * @param productType 要添加的产品类型对象
     * @return 受影响的行数，正常插入返回1
     */
    @Override
    public int save(ProductType productType) {

        return productTypeMapper.insertSelective(productType);
    }
}